package com.ftg.learn.day12.thread;

import java.util.Collections;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 线程
 * Runnable 线程的 接口
 * 这个类可以是一个独立的线程 .
 *
 * @author 布衣
 */
public class FirstThread extends Thread {

    public AtomicInteger a = new AtomicInteger(0);

    public void increment() {
        a.incrementAndGet();
    }

    public void decrement() {
        a.decrementAndGet();
    }


    @Override
    public void run() {
        if (Thread.currentThread().isInterrupted()) {
            System.out.println("状态终止");
            return ;
        }

        for (int i = 0; i < 1000; i++) {
            if (Thread.currentThread().isInterrupted()) {
                break;
            }
            if (Thread.currentThread().getName().equals("线程一")) {
                if (i == 1) {
//                    try {
//                        //不释放对象锁
//                        Thread.sleep(2000);
//                    } catch (InterruptedException e) {
//                        throw new RuntimeException(e);
//                    }
                }
                increment();
            } else {
                decrement();
            }
            System.out.println(a + "abc" + Thread.currentThread().getName());
        }
    }

    /**
     * 你只启动了一个main线程  主线程，用主线程调用一个类的实例下面的实例方法
     *
     * @param args
     */
    public static void main(String[] args) throws InterruptedException {
        //你没有启动一个线程  。。。
        FirstThread firstThread = new FirstThread();

//        <=1000
        Thread t = new Thread(firstThread, "线程一");
//        Thread t1 = new Thread(firstThread,"线程二");

        t.start();
        Thread.sleep(1);
        t.interrupt();
        yield();

//        t1.start();

        //什么意思 ，什么做用
        t.join();
//        t1.join();

        System.out.println(firstThread.a + "最终值");
    }

}
